package com.ynwt.util;

import com.ynwt.model.BasePlace;

import java.util.List;

/**
 * Created by huangying on 2017/5/30.
 */
public class RankUtil {

    /**
     * 添加名次（允许重复排名）
     * @param sortedList 已经排好顺序
     * @param maxPlace 取多少个排名
     * @param <T>
     * @return
     */
    public static <T extends BasePlace> List addPlaceAllowSamePlace(List<T> sortedList, int maxPlace) {

        if (sortedList == null || sortedList.size() == 0) {//如果是空数组，直接返回原数组
            return sortedList;
        } else {
            //取出第一个元素的名次，作为基准
            Long firstPlace = sortedList.get(0).getPlace();
            long place =  firstPlace != null ? firstPlace : 1;

            long count = 1; //名次重复计数器

            for (int i = 0; i < sortedList.size(); i++){

                if (i > 0){//如果不是第一个元素
                    if (sortedList.get(i).equals(sortedList.get(i - 1))) {//如果元素i等于元素i-1
                        count++;
                        sortedList.get(i).setPlace(place);
                        continue;
                    } else {
                        place += count;
                        count = 1L;//计数器复位
                        if (i < maxPlace) {
                            sortedList.get(i).setPlace(place);
                            continue;
                        } else {

                            for (int j = sortedList.size() - i; j > 0; j--) {
                                sortedList.remove(i);
                            }
                            break;
                        }
                    }
                } else {//如果是第一个元素
                    sortedList.get(i).setPlace(place);
                }
            }
            return sortedList;
        }
    }
}
